#!/usr/bin/python
# -*- coding: utf-8 -*-
import tushare as ts
import pandas as pd
from plotly.graph_objs import *
import os

# 这里定义一个函数，可以应用到每一行，设置axis=1就是应用到每一行的意思；如果设置axis=0，就是应用于每一列的意思
def openMinusLow(x):
    return float(x['open'])-float(x['low'])

# 根据股票代码获取股票的名字
def get_stock_name(stock_code):
    df = ts.get_realtime_quotes(stock_code)
    return df['name'][0]

# 获取指定股票开盘就买能赚钱的日期统计
'''TODO: 想做一个获取当前可操作日和上一天可操作日的时间差'''
def get_stock_operate_date(stock_code):
    print('统计股票：'+stock_code
          +'(' + get_stock_name(stock_code) + ')'
          +'\n* 当天上涨率高于0.2的天数。')
    print('* 说明：open-low表示开盘价和最低价相减的结果，越接近说明开盘买入基本上就是最低价')
    print('        然后在看price_change，高于0.3以上，400股就能赚100块以上')
    print(         'price_change=收盘价-昨收价，p_change=price_change/昨收价*100%')
    print('-------------------------------------------------------------------------------')
    start0 = '2017-05-02'
    end0 = str(datetime.date.today())
    #print('start = '+start0)
    #print('end = '+end0)
    #print(stock_code)
    df_h_data = ts.get_hist_data(stock_code,start=start0,end=end0)
    # print(df_h_data[['open','high','close','low','volume','price_change', 'p_change']].head(2))
    # 获取收盘价比昨天收盘价高0.1以上，并且开盘价低于收盘价的日期；
    df_price_change_list = df_h_data[
        (df_h_data['price_change'] > 0.2)
        &(df_h_data['open'] < df_h_data['close'])
    ]
    df_temp = df_price_change_list.apply(openMinusLow, axis=1)
    # 用insert就没有SettingWithCopyWarning警告了
    df_price_change_list.insert(0,'open-low',df_temp)
    print(df_price_change_list[['open', 'high', 'close', 'low', 'price_change', 'p_change','open-low']])
    return df_price_change_list

# TODO: 根据价格找出时间点，或者根据价格找出时间区间；
# 这里的df_stock_operate是get_stock_operate_date()的输出值
def get_low_price_moment(stock_code, df_stock_operate):
    for i_date in df_stock_operate.index:
        #获取某一天的历史价格变动情况，好像间隔周期是3秒
        df_tick_data = ts.get_tick_data(stock_code,date=i_date)
        # print(df_tick_data.head(2))
        lowPrice = float(df_stock_operate['low'][i_date])
        print('Date: '+ i_date)
        print('lowPrice :'+str(lowPrice))
        df_moment = df_tick_data[
            (df_tick_data['price']-lowPrice < 0.05)
        ]
        print(df_moment)
# TODO: 计算每个交易日和M5均线的背离情况
